home *** CD-ROM | disk | FTP | other *** search
- ; ***************************************************************************
- ; * *
- ; * MSCDEX.INC *
- ; * *
- ; * C D - R O M Device Driver Definitions *
- ; * *
- ; * Status word bit, command code, error code, and command structure *
- ; * definitions for a MicroSoft CD-ROM EXtensions hardware-dependent *
- ; * device driver *
- ; * *
- ; * *
- ; * History: *
- ; * *
- ; * ~1986 -by- Dan Newell *
- ; * Created. *
- ; * *
- ; * Fri Jun 22 1990 -by- Michael Edwards *
- ; * Changed some names. *
- ; * 10/1/90 -by- JohnYG *
- ; * Final Release (v2.20) *
- ; * *
- ; ***************************************************************************
-
- ;
- ; Segment definitions to guarantee proper ordering & attributes
- ;
- _TEXT SEGMENT BYTE PUBLIC 'CODE'
- _TEXT ENDS
-
- _DATA SEGMENT WORD PUBLIC 'DATA'
- _DATA ENDS
-
- _LAST SEGMENT PARA PUBLIC 'LAST'
- _LAST ENDS
-
- ;----------------------------------------------------------------
-
-
- ; *** Status word bits ***
-
- ERRBIT = 8000h
- BUSYBIT = 0200h
- DONEBIT = 0100h
-
-
- ; *** Play modes
-
- PLAY_TRUE = 1
- PAUSE_TRUE = 2
- PLAY_FALSE = 0
- PAUSE_FALSE = 0
-
-
- ; *** Normal DOS device driver commands ***
-
- DVRQ_INIT = 0
- DVRQ_MEDIACHK = 1
- DVRQ_BLDBPB = 2
- DVRQ_IOCTLI = 3
- DVRQ_INPUT = 4
- DVRQ_NONDSTI = 5
- DVRQ_STATI = 6
- DVRQ_FLUSHI = 7
- DVRQ_OUTPUT = 8
- DVRQ_VOUTPUT = 9
- DVRQ_STATO = 10
- DVRQ_FLUSHO = 11
- DVRQ_IOCTLO = 12
- DVRQ_DEVOPEN = 13
- DVRQ_DEVCLOSE = 14
- DVRQ_REM$MED = 15
- DVRQ_BUSYO = 16
- DVRQ_NCMD_MAX = 16
-
-
- ; *** Extended CDROM device driver commands ***
-
- DVRQ_ECMD_MIN = 128
- DVRQ_READL = 128
- DVRQ_READLNB = 129
- DVRQ_READLPRE = 130
- DVRQ_SEEK = 131
- DVRQ_PLAY = 132
- DVRQ_STOP = 133
- DVRQ_WRITEL = 134
- DVRQ_WRITELV = 135
- DVRQ_RESUME = 136
- DVRQ_ECMD_MAX = 136
-
-
- MODE_HSG = 0
- MODE_RED = 1
-
- IO_COOKED = 0
- IO_RAW = 1
-
-
- ; *** Ioctl Input commands ***
-
- IOI_ret_addr = 0
- IOI_loc_head = 1
- IOI_ioquery = 2
- IOI_err_stats = 3
- IOI_audio_info = 4
- IOI_rd_drv_bytes = 5
- IOI_dev_status = 6
- IOI_ret_sectsize = 7
- IOI_ret_volsize = 8
- IOI_media_changed = 9
- IOI_audio_dsk_inf = 10
- IOI_audio_trk_inf = 11
- IOI_audio_qch_inf = 12
- IOI_audio_subinfo = 13
- IOI_upc_code = 14
- IOI_audio_status = 15
- IOI_cmd_max = 15
-
-
- ; *** Ioctl Output commands ***
-
- IOO_eject_disc = 0
- IOO_lock_door = 1
- IOO_reset_drv = 2
- IOO_set_audio_ch_ctl = 3
- IOO_wr_drv_bytes = 4
- IOO_close_tray = 5
- IOO_cmd_max = 5
-
-
- ; *** Device error codes ***
-
- ; drverr_write_protect = 0
- drverr_unknown_unit = 1
- drverr_drive_not_ready = 2
- drverr_unknown_command = 3
- drverr_data_error = 4
- drverr_bad_req_len = 5
- drverr_seek_error = 6
- drverr_unknown_media = 7
- drverr_sector_not_found = 8
- ; drverr_out_of_paper = 9
- ; drverr_write_fault = 10
- drverr_read_fault = 11
- drverr_general_failure = 12
- ; reserved = 13
- ; reserved = 14
- drverr_invalid_disc_change = 15
-
-
- ; *** Device header structure definition ***
-
- _DeviceHeader struc
- dev_next dd ? ;pointer to next device
- dev_attr dw ? ;attributes (char, IOCTL, Open/Close/RM)
- dev_strat dw ? ;offset of strategy routine
- dev_intr dw ? ;offset or interrupt routine
- dev_name db 8 dup (' ') ;device name (must be 8 valid chars)
- dev_rsvd dw ? ;reserved
- dev_drvlet db ? ;drive letter
- dev_units db ? ;number of units
- _DeviceHeader ends
-
-
- ; *** Request header structure definition ***
-
- _RequestHeader struc
- rqh_len db ?
- rqh_unit db ?
- rqh_cmd db ?
- rqh_status dw ?
- rqh_rsvd db 8 dup (?)
- _RequestHeader ends
-
-
- ; *** INIT command request header structure definition ***
-
- _InitHeader struc
- init_rqh db size _RequestHeader dup (?)
- init_units db ?
- init_endaddr dd ?
- init_bpbarr dd ?
- init_devno db ?
- _InitHeader ends
-
-
- ; *** IOCTL (I/O) command request header structure definition ***
-
- _IoctlHeader struc
- ioctl_rqh db size _RequestHeader dup (?)
- ioctl_media db ?
- ioctl_xfer dd ?
- ioctl_nbytes dw ?
- ioctl_sector dw ?
- ioctl_valid dd ?
- _IoctlHeader ends
-
-
- ; *** READ LONG command request header structure definition ***
-
- _ReadWriteL struc
- rwl_rqh db size _RequestHeader dup (?)
- rwl_addrmd db ?
- rwl_xfer dd ?
- rwl_nsects dw ?
- rwl_sectno dd ?
- rwl_mode db ?
- rwl_ilsize db ?
- rwl_ilskip db ?
- _ReadWriteL ends
-
- ; *** PLAY command request header structure definition ***
-
- _PlayReq struc
- pl_rqh db size _RequestHeader dup (?)
- pl_addrmd db ? ; MODE_HSG or MODE_RED
- pl_start dd ? ; redbook or hsg addr of start frame
- pl_num dd ? ; binary number of frames to play
- _PlayReq ends
-
- ; *** Format for bytes returned from qchannel ***
-
- _QchanInfo struc
- ctrl_adr db ?
- tno db ?
- point_x db ?
- min db ?
- sec db ?
- frm db ?
- zero db ?
- pmin db ?
- psec db ?
- pframe db ?
- _QchanInfo ends
-
- ; *** Format for Toc information ***
-
- _TocInfo struc
- Tcntrl_adr db ?
- Tpmin db ?
- Tpsec db ?
- Tpframe db ?
- _TocInfo ends
-
- ; *** IOCTL INPUT sub-command buffer structure definitions ***
-
- _Ioi_return_address struc
- io_devaddr dd ?
- _Ioi_return_address ends
-
- _Ioi_location_head struc
- io_loc_mode db ?
- io_loc dd ?
- _Ioi_location_head ends
-
- _Ioi_io_query struc
- io_query_stat db ?
- io_query_reqno dw ?
- _Ioi_io_query ends
-
- _Ioi_audio_channel_ctrl struc
- io_ch0_ich db ?
- io_ch0_vol db ?
- io_ch1_ich db ?
- io_ch1_vol db ?
- io_ch2_ich db ?
- io_ch2_vol db ?
- io_ch3_ich db ?
- io_ch3_vol db ?
- _Ioi_audio_channel_ctrl ends
-
- _Ioi_read_drive_bytes struc
- io_num_bytes db ?
- io_rd_buf db 128 dup (?)
- _Ioi_read_drive_bytes ends
-
- _Ioi_device_status struc
- io_dev_params dd ?
- _Ioi_device_status ends
-
- _Ioi_sector_size struc
- io_sect_mode db ?
- io_sect_size dw ?
- _Ioi_sector_size ends
-
- _Ioi_volume_size struc
- io_volume_size dd ?
- _Ioi_volume_size ends
-
- _Ioi_media_change struc
- io_media db ?
- _Ioi_media_change ends
-
- _Ioi_audio_disk_info struc
- io_lowest_trk db ?
- io_highest_trk db ?
- io_lout_addr db 4 dup(?)
- _Ioi_audio_disk_info ends
-
- _Ioi_audio_track_info struc
- io_track_num db ?
- io_track_addr db 4 dup (?)
- io_track_cntl db ?
- _Ioi_audio_track_info ends
-
- _Ioi_audio_Qchannel_info struc
- io_qctl db ?
- io_qtno db ?
- io_qx db ?
- io_qtrk_time db 3 dup(?)
- io_q_zero db ?
- io_qdsk_time db 3 dup(?)
- _Ioi_audio_Qchannel_info ends
-
- _Ioi_audio_status_info struc
- io_audio_st_bit dw ?
- io_audio_start dd ?
- io_audio_end dd ?
- _Ioi_audio_status_info ends
-
- ; *** IOCTL OUTPUT sub-command buffer structure definitions ***
-
- ;_Ioo_eject struc
- ;_Ioo_eject ends
-
- _Ioo_lock struc
- io_lock db ?
- _Ioo_lock ends
-
- ;_Ioo_reset struc
- ;_Ioo_reset ends
-
- _Ioo_write_drive_ctrl struc
- ioo_wrdev_top db ?
- ioo_wrdev_data dw 7 dup(?)
- ioo_wrdev_char db 3 dup(?)
- _Ioo_write_drive_ctrl ends
-
- ;Ioo_close struc
- ;Ioo_close ends
-
-
-
-